/**
 * @(#)FlowNode.java, 十二月 15, 2024.
 * <p>
 * Copyright 2024 memberclub.com. All rights reserved.
 * memberclub.COM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.memberclub.common.flow;

/**
 * 流程节点接口
 *
 * 执行顺序参考如下, 顺序执行 process,如果执行均成功,则逆序从 success方法执行
 * 如中间节点抛出异常,则在抛出异常位置,执行 rollback方法.
 *
 * 在执行 success 或 rollback 方法后,会立即执行该节点的 callback 方法
 *
 * A    process success rollback   callback
 *         V       A        A         A
 * B    process success rollback   callback
 *         V       A        A         A
 * C    process success rollback   callback
 *         V       A        A         A
 * D    process success rollback   callback
 *              成功执行  出现异常回滚   无论成功异常
 *
 *
 * author: 掘金五阳
 */
public abstract class FlowNode<T> {


    public abstract void process(T t);

    public void success(T t) {
    }

    public void rollback(T t, Exception e) {
    }

    public void callback(T t, Exception e) {
    }
}